Cuando utilizamos operador de asignación (más comunmente conocido como =) para asignar un array –o un objeto– ya existente a una variable debemos tener en cuenta que no estamos almacenando una copia del array, sino una referencia al mismo.
Considérese:
var a = [ 1, 2, 3 ];
alert(a); // [ 1, 2, 3 ]
var b = a;
alert(b); // [ 1, 2, 3 ]
b.push(4);
alert(b); // [1, 2, 3, 4 ]
alert(a); // [ 1, 2, 3, 4 ] <-- `a` ha sido modificado indirectamente
Veamos como realizar una copia en lugar de almacenar una referencia. Continúa leyendo Copia de arrays y objetos
En javascript hay objetos, como arguments que parecen un array (podemos acceder a arguments[0] y arguments.length) pero no lo son y, por tanto, no podemos usar los métodos propios de un array (slice, pop,…) en estos objetos. ¿O sí podemos? Dan Webb explica un sucio truco en A Low-down, Dirty Goblin Of A Hack. Sin desperdicio.
Amigos y compañeros que vivís del desarrollo con PHP, he aquí para vuestro uso y disfrute algunas traducciones de sintaxis de PHP en lo que a arrays se refiere.
Continúa leyendo El Array explicado a los phperos
Este truquito para copiar propiedades de un objeto a otro:
function apply(a, b) {
for (var i in b) {
a[i] = b[i];
}
}
Puede ser útil para manejar parámetros por defecto en una función:
function algoHaremos(conf) {
var def = { order: 'date', asc: false };
conf = apply(def, conf || {});
}
Continúa leyendo Copia de propiedades e importación de métodos
El uso de literales de objeto, además de servir para trapichear con hashes, permite mantener el código limpio y bien ordenadito. Chris Heilmann lo explica en Show love to the object literal.
Sergio Pereira –el mismo de la documentación de Prototype.js– explica conceptos avanzados del lenguaje en Quick guide to somewhat advanced JavaScript. OOP y otras hierbas. Recomendada para pehacheperos.